package com.Beans.OfficeManager;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.faces.event.ActionEvent;

import com.Beans.Dao.AreaDAO;
import com.Beans.Dao.SolicitudDAO;
import com.Beans.Dao.TrakingestadosDAO;
import com.Beans.Models.Area;
import com.Beans.Models.Jefearea;
import com.Beans.Models.Solicitud;
import com.Beans.Models.Trakingestados;
import com.Beans.Sessions.Session;
import com.Beans.Util.DateStandar;
import com.Beans.Util.SolicitudView;

public class OfficeManagerListRequest {
	private List<SolicitudView> l_solicitudview;
	private SolicitudView var;
	private SolicitudView selected;
	
	public List<SolicitudView> getL_solicitudview() {
		 List<Solicitud> ss = SolicitudDAO.findByArea(Session.getIdArea());
		 List<Trakingestados> tes = TrakingestadosDAO.findByArea(Session.getIdArea());
		 l_solicitudview = new ArrayList<SolicitudView>();
		 Area area_destino = AreaDAO.findById(Session.getIdArea());
		 for(int i=0;i<ss.size();i++){
			 SolicitudView sv = new SolicitudView();
			 sv.setId(String.valueOf(ss.get(i).getIdSolicitud()));
			 sv.setEmpleado(ss.get(i).getRedactor());
			 sv.setDetalleMotivo(ss.get(i).getDetalleMotivo());
			 sv.setDetallePermiso(ss.get(i).getDetallePermiso());
			 sv.setAreaDestino(area_destino.getNombre());
			 Area area_origen = AreaDAO.findById(ss.get(i).getIdAreaOrigen());
			 sv.setAreaOrigen(area_origen.getNombre());
			 sv.setFechaEmision(DateStandar.FormatDate(ss.get(i).getFechaEmision()));
			 sv.setE_Aprobado(tes.get(i).getEstadoAprobado());
			 if(!sv.getE_Aprobado().equalsIgnoreCase("Pendiente")){
				 sv.setFechaAprobacion(DateStandar.FormatDate(ss.get(i).getFechaAprobacion()));
				 sv.setMsjRechazado(tes.get(i).getRechazadoMsj());
			 }
			 sv.setE_Efectuado(tes.get(i).getEstadoEfectuado());
			 sv.setE_Conforme(tes.get(i).getEstadoConformidad());
			 sv.setE_Solicitud(tes.get(i).getEstadoSolicitud());
			 if(sv.getE_Aprobado().equals("Cancelado")){
				 sv.setFechaAprobacion(DateStandar.FormatDate(ss.get(i).getFechaAprobacion()));
			 }
			 l_solicitudview.add(sv);
		 }
		 return l_solicitudview;
	}

	public SolicitudView getVar() {
		return var;
	}

	public void setVar(SolicitudView var) {
		this.var = var;
	}

	public SolicitudView getSelected() {
		return selected;
	}

	public void setSelected(SolicitudView selected) {
		this.selected = selected;
	}

	public void Revisar(ActionEvent ae){
		if(selected == null){
			Session.addErrorMessage("Seleccione una Solicitud");
		}else{
			Session.redirectTo("/jefearea/solicitud_detallada.xhtml");
		}
	}
	public String dtPedido() {
		String s1 = "Motivo: "+ selected.getDetalleMotivo();
		String s2 = "Permisos:" + selected.getDetallePermiso();
		return s1+"\n"+s2;
	}
	
	public void mis_solicitudes(){
		Session.redirectTo("/jefearea/solicitudes.xhtml");
	}
	
	public void AprobarEnviar(){
		if(isOutStanding()==0 && (!selected.getMsjRechazado().equalsIgnoreCase(null) || !selected.getMsjRechazado().equalsIgnoreCase(""))){
			Date fecha_aprobado = new Date();
			Solicitud s = SolicitudDAO.findById(Integer.parseInt(selected.getId()));
			Trakingestados te = TrakingestadosDAO.findByIdSolicitud(s);
			s.setFechaAprobacion(fecha_aprobado);
			te.setEstadoAprobado(selected.getE_Aprobado());
			te.setRechazadoMsj(selected.getMsjRechazado());
			te.setSolicitud(s);
			SolicitudDAO.update(s);
			TrakingestadosDAO.update(te);
			Session.redirectTo("/jefearea/solicitudes.xhtml");
		}
	}
	
	public int isOutStanding(){
		if(selected.getE_Aprobado().equalsIgnoreCase("Pendiente")){
			return 1;
		}else{
			return 0;
		}
	}
	public String MsjAprobacion(){
		System.out.println(selected.getMsjRechazado());
		return selected.getMsjRechazado();
	}
}
